using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace MobileClient
{
	/// <summary>
	/// Summary description for clsModifyButtons.
	/// </summary>
	public class clsModifyButtons
	{
		public clsModifyButtons()
		{
		}

		[DllImport("aygshell.dll")]
		private static extern bool SHDoneButton(
			IntPtr hWnd,
			UInt32 dwState);
		[DllImport("coredll.dll")]
		public static extern UInt32 SetWindowLong(
			IntPtr hWnd,
			int nIndex,
			UInt32 dwNewLong);
		[DllImport("coredll.dll")]
		public static extern UInt32 GetWindowLong(
			IntPtr hWnd,
			int nIndex);
		[DllImport("coredll.dll")]
		private static extern IntPtr SetCapture(IntPtr hWnd);

		[DllImport("coredll.dll")]
		private static extern IntPtr GetCapture();

		public const UInt32 SHDB_SHOW = 0x0001;
		public const UInt32 SHDB_HIDE = 0x0002;
		public const int GWL_STYLE = -16;
		public const UInt32 WS_NONAVDONEBUTTON = 0x00010000;

		public static IntPtr GetHWnd(Control ctrl)
		{
			IntPtr hOldWnd = GetCapture();

			ctrl.Capture = true;

			IntPtr hWnd = GetCapture();
			
			ctrl.Capture = false;

			SetCapture(hOldWnd);

			return hWnd;
		}
		public static void HideDoneButton(IntPtr hWnd)
		{
			SHDoneButton(hWnd, SHDB_HIDE);
		}

		public static void HideXButton(IntPtr hWnd)
		{
			UInt32 dwStyle = GetWindowLong(hWnd, GWL_STYLE);

			if ((dwStyle & WS_NONAVDONEBUTTON) == 0)
				SetWindowLong(hWnd, GWL_STYLE, dwStyle | WS_NONAVDONEBUTTON);
		}
	}
}
